package com.fcat.springboot.mybatis.service;

import tk.mybatis.mapper.entity.Example;

import java.util.List;
import java.util.Map;

/**
 * @BelongsProject: fcat-base
 * @BelongsPackage: com.fcat.springboot.mybatis.service
 * @Author: susen
 * @CreateTime: 2019-09-16 17:16
 * @Description: 新增加batch之后的
 */
public interface TsuantoneBaseService<T> {
    /**
     * 查询
     *
     * @param entity
     * @return
     */
    T selectOne(T entity);

    /**
     * 通过Id查询
     *
     * @param id
     * @return
     */
    T selectById(Object id);

    /**
     * 根据ID集合来查询
     *
     * @param ids
     * @return
     */
//    List<T> selectListByIds(List<Object> ids);

    /**
     * 查询列表
     *
     * @param entity
     * @return
     */
    List<T> selectList(T entity);


    /**
     * Example查询
     * @param example
     * @return
     */
    List<T> selectByExample(Example example);


    T selectOneByExample(Example example);

    Integer selectCountByExample(Example example);





    /**
     * 获取所有对象
     *
     * @return
     */
    List<T> selectListAll();



    /**
     * 查询总记录数
     *
     * @param entity
     * @return
     */
    Long selectCount(T entity);

    /**
     * 添加
     *
     * @param entity
     */
    int insert(T entity);


    /**
     * 插入 不插入null字段
     *
     * @param entity
     */
    int insertSelective(T entity);

    /**
     * 删除
     *
     * @param entity
     */
    int delete(T entity);

    /**
     * 根据Id删除
     *
     * @param id
     */
    int deleteById(Object id);


    /**
     * 根据id更新
     *
     * @param entity
     */
    int updateById(T entity);


    /**
     * 不update null
     *
     * @param entity
     */
    int updateSelectiveById(T entity);

    /**
     * 根据id批量修改
     * @param list
     * @return
     */
    int batchUpdateById(List<T> list);

    /**
     * 批量插入
     * @param list
     * @return
     */
    int batchInserts(List<T> list);

    /**
     * 根据id批量删除
     * @param list
     * @return
     */
    int batchDeleteById(List list);

    int insertList(List list);

    int deleteByIds(List list);

    int deleteByIds(String ids);
}
